matlab对图像处理 您所在的位置:网站首页 matlab 裁剪图像 matlab对图像处理

matlab对图像处理

2024-02-19 19:14| 来源: 网络整理| 查看: 265

matlab截取图像Ⅱ

欢迎来到!德莱联盟 应该是CSDN之bruderlung的博客! 你可以仔细阅读这篇文章,结合实例初步了解MATLAB的一些功能!

程序要求

建立循环函数,通过程序依此读取十幅原始图像,然后将原始图像转存为灰度图像

确定数码管所显示数字的四角坐标,然后将其依次输出

依据之前寻找到的四个坐标,将数字部分以外的图像设置为黑色;

在(3)的基础上,通过编写程序将数字部分转存为一个较小的图像(该图像的尺寸由步骤(3)中的四个坐标计算得到)。

建立循环函数 save_path='D:\picture\'; %获取图片所在位置 img_path_list = dir(strcat(save_path,'*.jpg')); %依次仅读取文件夹中的.jpg格式图片 img_num=length(img_path_list); %判断图片个数 for i = 1:img_num picture_name = img_path_list(i).name; %获取图片的名称 picture_1 = imread(strcat(save_path,picture_name)); %1.建立循环函数依次读取原始图像 end 处理后效果:

原始图片

确定坐标

ginput函数 功能:允许用户以交互方式使用鼠标选定要裁剪的区域以此获取坐标点并以矩形方式裁剪

[x,y]=ginput(4); %获取数码管所显示的数字的四角坐标,获取坐标时要按照左上,右上,左下,右下的顺序方式获取∵后面涂黑时有局限性 灰度图 picture_2=rgb2gray(picture_1); %将24位原始图转为8位灰度图 处理后效果:

灰度图

背景设为黑色 picture_1 = imread(strcat(save_path,picture_name)); %1.建立循环函数依次读取原始图像 picture_2=rgb2gray(picture_1); %将24位原始图转为8位灰度图 picture_3 = picture_2; %对除数字外的图像进行填充颜色 for m = 1:size(picture_3,1) for n = 1:size(picture_3,2) if n < x(1) || n > x(4) || m < y(1) || m > y(4) %不在矩形内的点变为黑色 picture_3(m,n,1) = 0; end end end imwrite(picture_3,[num2str(i+10),'.jpg']); 处理后效果:

背景变黑图

裁剪图片

imcrop函数 功能:用于返回图像的一个裁剪区域。可把图像显示在一个图像窗口中

picture_4 = imcrop(picture_2,[x(1),y(1),abs(x(1)-x(4)),abs(y(1)-y(4))]); %对图像进行截取,(x1,y1)为数字左上角坐标,(x4,y4)为右下角的坐标。abs(x(1)-x(4))为x轴截取的长度,abs(y(1)-y(4))为y轴截取的长度。 处理后效果:

截取数字图

完整代码 在这里插入代码片 %必读:获取坐标时需要用鼠标点击四次,分别为数字的四角,获取坐标时要按照左上,右上,左下,右下的顺序方式获取∵后面涂黑时有局限性 save_path='D:\picture\'; %获取图片所在位置 img_path_list = dir(strcat(save_path,'*.jpg')); %依次仅读取文件夹中的.jpg格式图片 img_num=length(img_path_list); %判断图片个数 for i = 1:img_num picture_name = img_path_list(i).name; %获取图片的名称 picture_1 = imread(strcat(save_path,picture_name)); %1.建立循环函数依次读取原始图像 picture_2=rgb2gray(picture_1); %将24位原始图转为8位灰度图 %size(picture_2); %求出我的图像的大小 %s=1920 imshow(picture_2) if i==1 %用if只需要确定一次图像中数字的四角坐标 [x,y]=ginput(4); %获取数码管所显示的数字的四角坐标, imwrite(picture_2,[num2str(i),'.jpg']) %灰度图从01开始命名到10结束 picture_3 = picture_2; %对除数字外的图像进行填充颜色 for m = 1:size(picture_3,1) for n = 1:size(picture_3,2) if n < x(1) || n > x(4) || m < y(1) || m > y(4) %不在矩形区域内的点变为黑色 picture_3(m,n,1) = 0; end end end imwrite(picture_3,[num2str(i+10),'.jpg']); %将涂黑的图片保存并从11开始命名到20结束 picture_4 = imcrop(picture_3,[x(1),y(1),abs(x(1)-x(4)),abs(y(1)-y(4))]); imwrite(picture_4,[num2str(i+20),'.jpg']); %将截取的数字图像保存并从21开始命名到30结束 else imwrite(picture_2,[num2str(i),'.jpg']); %灰度图从01开始命名到10结束 picture_3 = picture_2; %对除数字外的图像进行填充颜色 for m = 1:size(picture_3,1) for n = 1:size(picture_3,2) if n < x(1) || n > x(4) || m < y(1) || m > y(4) %不在矩形区域内的点变为黑色 picture_3(m,n,1) = 0; end end end imwrite(picture_3,[num2str(i+10),'.jpg']); %将涂黑的图片保存并从11开始命名到20结束 picture_4 = imcrop(picture_3,[x(1),y(1),abs(x(1)-x(4)),abs(y(1)-y(4))]); %对图像进行截取,(x1,y1)为数字左上角坐标,(x4,y4)为右下角的坐标。abs(x(1)-x(4))为x轴截取的长度,abs(y(1)-y(4))为y轴截取的长度。 imwrite(picture_4,[num2str(i+20),'.jpg']); %将截取的数字图像保存并从21开始命名到30结束 end end [x,y] %矩阵中每一行依次为四点坐标 % 备注:1.刚开始if函数里面只写了[x,y]=ginput(4)但是运行后无法显示0的图像了,由于时间原因所以,就将处理的程序全部复制到i==1时里面 % 2.picture_1:24位rgb图象 3.picture_2: 8位灰度图 4.picture_3:黑色背景图 % 5.picture_4:数字提取图


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有